package Leetcode.ArrayAndLinkedList.moveZeroes283;

/**
 * 该方法为双指针法  借鉴他人写法
 * 思路： 讲每个非0的值往前移 后面补充0
 * 遍历整个数组，如果当前值不为0，则把这个值往前挪动
 * 用index记录位置 index最终的位置就是数组遍历完
 * 移动完的位置，只需在后面补0即可
 * <p>
 * 优点： 方法简洁明了 容易读懂
 */
public class Solution2 {

    public void moveZeroes(int[] nums) {
        int index = 0;
        for (int num : nums ) {
            if(num != 0) {
                nums[index++] = num;
            }
        }
        while(index < nums.length) {
            nums[index++] = 0;
        }

        for (int i = 0; i < nums.length; ++i) {
            System.out.print(nums[i]);
        }
    }


    public static void main(String[] args) {
        int[] num = {0, 1, 0, 3, 0, 0, 0, 1, 2};
        new Solution2().moveZeroes(num);

    }

}
